From: Jasper St. Pierre Date: Fri, 2 Aug 2013 04:18:55 +0000 (-0400) Subject: messageTray: Remove the stackedNotification tracking complexity X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3726 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=de050991d45b588da0ac1fdedc1e63512f2cbfa8;p=gnome-shell.git messageTray: Remove the stackedNotification tracking complexity We only have one signal left to track, but since it's destroy it doesn't matter if it's disconnected or not since it will eventually be GC'd. --- diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 5aee7c33c..5ae077161 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1448,25 +1448,17 @@ const SummaryItem = new Lang.Class({ if (this.notificationStack.get_n_children() > 0) return; - for (let i = 0; i < this.source.notifications.length; i++) { - this._appendNotificationToStack(this.source.notifications[i]); - } - + this.source.notifications.forEach(Lang.bind(this, this._appendNotificationToStack)); this.scrollTo(St.Side.BOTTOM); }, doneShowingNotificationStack: function() { - for (let i = 0; i < this._stackedNotifications.length; i++) { - let stackedNotification = this._stackedNotifications[i]; - let notification = stackedNotification.notification; + this.source.notifications.forEach(Lang.bind(this, function(notification) { notification.collapseCompleted(); - notification.disconnect(stackedNotification.notificationDestroyedId); - if (notification.actor.get_parent() == this.notificationStack) - this.notificationStack.remove_actor(notification.actor); notification.setIconVisible(true); notification.enableScrolling(true); - } - this._stackedNotifications = []; + this.notificationStack.remove_actor(notification.actor); + })); }, _notificationAddedToSource: function(source, notification) { @@ -1474,17 +1466,21 @@ const SummaryItem = new Lang.Class({ this._appendNotificationToStack(notification); }, + _contentUpdated: function() { + this.source.notifications.forEach(function(notification, i) { + notification.setIconVisible(i == 0); + }); + + this.emit('content-updated'); + }, + _appendNotificationToStack: function(notification) { - let stackedNotification = {}; - stackedNotification.notification = notification; - stackedNotification.notificationDestroyedId = notification.connect('destroy', Lang.bind(this, this._notificationDestroyed)); - this._stackedNotifications.push(stackedNotification); + notification.connect('destroy', Lang.bind(this, this._contentUpdated)); if (!this.source.isChat) notification.enableScrolling(false); - if (this.notificationStack.get_n_children() > 0) - notification.setIconVisible(false); - this.notificationStack.add(notification.actor); notification.expand(false); + this.notificationStack.add(notification.actor); + this._contentUpdated(); }, // scrollTo: @@ -1498,28 +1494,6 @@ const SummaryItem = new Lang.Class({ else if (side == St.Side.BOTTOM) adjustment.value = adjustment.upper; }, - - _contentUpdated: function() { - this.emit('content-updated'); - }, - - _notificationDestroyed: function(notification) { - for (let i = 0; i < this._stackedNotifications.length; i++) { - if (this._stackedNotifications[i].notification == notification) { - let stackedNotification = this._stackedNotifications[i]; - notification.disconnect(stackedNotification.notificationDestroyedId); - this._stackedNotifications.splice(i, 1); - if (notification.actor.get_parent() == this.notificationStack) - this.notificationStack.remove_actor(notification.actor); - this._contentUpdated(); - break; - } - } - - let firstNotification = this._stackedNotifications[0]; - if (firstNotification) - firstNotification.notification.setIconVisible(true); - } }); Signals.addSignalMethods(SummaryItem.prototype);